home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / SAMPLES / CAMERA / CAMC / COMCAMC.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  2.4 KB  |  68 lines

  1. /* $Id: COMCamC.h 1.1 1996/07/18 23:52:42 Damien Exp $ */
  2.  
  3. // Copyright (c) 1995, Ray Dream, Inc. All rights reserved.
  4.  
  5. //
  6. // COM Example of a Conical Camera
  7. //
  8.  
  9. #ifndef __COMCAMC__
  10. #define __COMCAMC__  
  11.  
  12. #ifndef __I3DEXCAM__
  13. #include "I3DExCam.h"
  14. #endif
  15.  
  16. // ConicCamera GUID :
  17. // 520F6AA0-725F-101C-B801-04021C007002
  18. DEFINE_GUID(CLSID_ConicCamera, 0x520F6AA0L, 0x725F, 0x101C, 0xB8, 0x01, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  19.  
  20.  
  21. typedef struct CameraData {
  22.   short fZoomCoef;
  23.   } CameraData;
  24.  
  25.  
  26. // Conical Camera Object :
  27. #undef INTERFACE
  28. #define INTERFACE ConicCamera
  29. class ConicCamera : public I3DExCamera {
  30. public :  
  31.   ConicCamera();
  32.   ~ConicCamera();
  33.   
  34.   // IUnknown Interface :
  35.   STDMETHODIMP         QueryInterface(THIS_ REFIID riid, LPVOID FAR* ppvObj);
  36.   STDMETHODIMP_(ULONG) AddRef(THIS);
  37.   STDMETHODIMP_(ULONG) Release(THIS);
  38.   
  39.   // I3DExtension method :
  40.   STDMETHODIMP_(I3DExtension*) Clone(THIS);
  41.     STDMETHODIMP                 ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);
  42.       
  43.   // I3DExDataExchanger methods :
  44.   STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
  45.   STDMETHODIMP_(void*)             GetExtensionDataBuffer(THIS);
  46.   STDMETHODIMP                     ExtensionDataChanged(THIS);
  47.   STDMETHODIMP                     HandleEvent(THIS_ ULONG sourceID);
  48.   STDMETHODIMP_(short)             GetResID(THIS);
  49.   
  50.   // I3DExCamera methods
  51.   STDMETHODIMP           SetTransform(THIS_ TRANSFORM3D* transform);
  52.   STDMETHODIMP_(BOOLEAN) CreateRay(THIS_ VECTOR2D* screenPosition, VECTOR3D* resultOrigin, VECTOR3D* resultDirection);
  53.   STDMETHODIMP_(BOOLEAN) Project3DTo2D(THIS_ VECTOR3D* position,VECTOR2D* resultScreenPosition, NUM3D* resultDistanceToScreen); 
  54.   STDMETHODIMP_(ULONG)   GetPrimitiveID(THIS);
  55.     STDMETHODIMP_(ULONG)   Clip3D(THIS_ FACET3D* localFacet, VERTEX3D* localVertices,
  56.                                                                       FACET3D* cameraFacet, VERTEX3D* cameraVertices,
  57.                                                                           NUM3D* clipBox);
  58.     STDMETHODIMP_(BOOLEAN) ClipLine3D(THIS_ VECTOR3D* P1, VECTOR3D* P2);
  59. private :
  60.   TRANSFORM3D  fTransform; // Transformation Data (Local to Global and Global to Local)
  61.   ULONG        fCRef;      // reference Counter
  62.   CameraData   fData;      // Camera Data Zoom and Angle
  63.   NUM3D        fCoef;      // Preprocessed Coefficient factor
  64.   NUM3D        fQuickZoom; // QuickFix values of Zoom in the Camera Data
  65.   };
  66.                           
  67. #endif // __COMCONIC__
  68.